home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
- Network Working Group N. Borenstein, Bellcore
- Request for Comments: 1343 June 1992
-
- A User Agent Configuration Mechanism
-
- For Multimedia Mail Format Information
-
-
- Status of This Memo
-
- This is an informational memo for the Internet community,
- and requests discussion and suggestions for improvements.
- This memo does not specify an Internet standard.
- Distribution of this memo is unlimited.
-
- Abstract
-
- This memo suggests a file format to be used to inform
- multiple mail reading user agent programs about the
- locally-installed facilities for handling mail in various
- formats. The mechanism is explicitly designed to work with
- mail systems based Internet mail as defined by RFC's 821,
- 822, 934, 1049, 1113, and the Multipurpose Internet Mail
- Extensions, known as MIME. However, with some extensions it
- could probably be made to work for X.400-based mail systems
- as well. The format and mechanism are proposed in a manner
- that is generally operating-system independent. However,
- certain implementation details will inevitably reflect
- operating system differences, some of which will have to be
- handled in a uniform manner for each operating system. This
- memo makes such situations explicit, and, in an appendix,
- suggests a standard behavior under the UNIX operating
- system.
-
- Introduction
-
- The electronic mail world is in the midst of a transition
- from single-part text-only mail to multi-part, multi-media
- mail. In support of this transition, various extensions to
- RFC 821 and RFC 822 have been proposed and/or adopted,
- notably including MIME [RFC-1341]. Various parties have
- demonstrated extremely high-functionality multimedia mail,
- but the problem of mail interchange between different user
- agents has been severe. In general, only text messages have
- been shared between user agents that were not explicitly
- designed to work together. This limitation is not
- compatible with a smooth transition to a multi-media mail
- world.
-
- One approach to this transition is to modify diverse sets of
- mail reading user agents so that, when they need to display
- mail of an unfamiliar (non-text) type, they consult an
- external file for information on how to display that file.
- That file might say, for example, that if the content-type
-
-
-
- Borenstein [Page 1]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- of a message is "foo" it can be displayed to the user via
- the "displayfoo" program.
-
- This approach means that, with a one-time modification, a
- wide variety of mail reading programs can be given the
- ability to display a wide variety of types of message.
- Moreover, extending the set of media types supported at a
- site becomes a simple matter of installing a binary and
- adding a single line to a configuration file. Crucial to
- this scheme, however, is that all of the user agents agree
- on a common representation and source for the configuration
- file. This memo proposes such a common representation.
-
- Location of Configuration Information
-
- Each user agent must clearly obtain the configuration
- information from a common location, if the same information
- is to be used to configure all user agents. However,
- individual users should be able to override or augment a
- site's configuration. The configuration information should
- therefore be obtained from a designated set of locations.
- The overall configuration will be obtained through the
- virtual concatenation of several individual configuration
- files known as mailcap files. The configuration information
- will be obtained from the FIRST matching entry in a mailcap
- file, where "matching" depends on both a matching content-
- type specification, an entry containing sufficient
- information for the purposes of the application doing the
- searching, and the success of any test in the "test=" field,
- if present.
-
- The precise location of the mailcap files is operating-
- system dependent. A standard location for UNIX is specified
- in Appendix A.
-
- Overall Format of a Mailcap File
-
- Each mailcap file consists of a set of entries that describe
- the proper handling of one media type at the local site.
- For example, one line might tell how to display a message in
- Group III fax format. A mailcap file consists of a sequence
- of such individual entries, separated by newlines (according
- to the operating system's newline conventions). Blank lines
- and lines that start with the "#" character (ASCII 35) are
- considered comments, and are ignored. Long entries may be
- continued on multiple lines if each non-terminal line ends
- with a backslash character ('\', ASCII 92), in which case
- the multiple lines are to be treated as a single mailcap
- entry. Note that for such "continued" lines, the backslash
- must be the last character on the line to be continued.
-
- Thus the overall format of a mailcap file is given, in the
- modified BNF of RFC 822, as:
-
-
-
-
- Borenstein [Page 2]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- Mailcap-File = *Mailcap-Line
-
- Mailcap-Line = Comment / Mailcap-Entry
-
- Comment = NEWLINE / "#" *CHAR NEWLINE
-
- NEWLINE = <newline as defined by OS convention>
-
- Note that the above specification implies that comments must
- appear on lines all to themselves, with a "#" character as
- the first character on each comment line.
-
- Format of a Mailcap Entry
-
- Each mailcap entry consists of a number of fields, separated
- by semi-colons. The first two fields are required, and must
- occur in the specified order. The remaining fields are
- optional, and may appear in any order.
-
- The first field is the content-type, which indicates the
- type of data this mailcap entry describes how to handle. It
- is to be matched against the type/subtype specification in
- the "Content-Type" header field of an Internet mail message.
- If the subtype is specified as "*", it is intended to match
- all subtypes of the named content-type.
-
- The second field, view-command, is a specification of how
- the message or body part can be viewed at the local site.
- Although the syntax of this field is fully specified, the
- semantics of program execution are necessarily somewhat
- operating system dependent. UNIX semantics are given in
- Appendix A.
-
- The optional fields, which may be given in any order, are as
- follows:
-
- -- The "compose" field may be used to specify a program that
- can be used to compose a new body or body part in the given
- format. Its intended use is to support mail composing
- agents that support the composition of multiple types of
- mail using external composing agents. As with the view-
- command, the semantics of program execution are operating
- system dependent, with UNIX semantics specified in Appendix
- A. The result of the composing program may be data that is
- not yet suitable for mail transport -- that is, a Content-
- Transfer-Encoding may need to be applied to the data.
-
- -- The "composetyped" field is similar to the "compose"
- field, but is to be used when the composing program needs to
- specify the Content-type header field to be applied to the
- composed data. The "compose" field is simpler, and is
- preferred for use with existing (non-mail-oriented) programs
- for composing data in a given format. The "composetyped"
- field is necessary when the Content-type information must
-
-
-
- Borenstein [Page 3]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- include auxilliary parameters, and the composition program
- must then know enough about mail formats to produce output
- that includes the mail type information.
-
- -- The "edit" field may be used to specify a program that
- can be used to edit a body or body part in the given format.
- In many cases, it may be identical in content to the
- "compose" field, and shares the operating-system dependent
- semantics for program execution.
-
- -- The "print" field may be used to specify a program that
- can be used to print a message or body part in the given
- format. As with the view-command, the semantics of program
- execution are operating system dependent, with UNIX
- semantics specified in Appendix A.
-
- -- The "test" field may be used to test some external
- condition (e.g. the machine architecture, or the window
- system in use) to determine whether or not the mailcap line
- applies. It specifies a program to be run to test some
- condition. The semantics of execution and of the value
- returned by the test program are operating system dependent,
- with UNIX semantics specified in Appendix A. If the test
- fails, a subsequent mailcap entry should be sought.
- Multiple test fields are not permitted -- since a test can
- call a program, it can already be arbitrarily complex.
-
- -- The "needsterminal" field indicates that the view-command
- must be run on an interactive terminal. This is needed to
- inform window-oriented user agents that an interactive
- terminal is needed. (The decision is not left exclusively
- to the view-command because in some circumstances it may not
- be possible for such programs to tell whether or not they
- are on interactive terminals.) The needsterminal command
- should be assumed to apply to the compose and edit commands,
- too, if they exist. Note that this is NOT a test -- it is a
- requirement for the environment in which the program will be
- executed, and should typically cause the creation of a
- terminal window when not executed on either a real terminal
- or a terminal window.
-
- -- The "copiousoutput" field indicates that the output from
- the view-command will be an extended stream of output, and
- is to be interpreted as advice to the UA (User Agent mail-
- reading program) that the output should be either paged or
- made scrollable. Note that it is probably a mistake if
- needsterminal and copiousoutput are both specified.
-
- -- The "description" field simply provides a textual
- description, optionally quoted, that describes the type of
- data, to be used optionally by mail readers that wish to
- describe the data before offering to display it.
-
-
-
-
-
- Borenstein [Page 4]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- -- The "x11-bitmap" field names a file, in X11 bitmap (xbm)
- format, which points to an appropriate icon to be used to
- visually denote the presence of this kind of data.
-
- -- Any other fields beginning with "x-" may be included for
- local or mailer-specific extensions of this format.
- Implementations should simply ignore all such unrecognized
- fields to permit such extensions, some of which might be
- standardized in a future version of this document.
-
- Some of the fields above, such as "needsterminal", apply to
- the actions of the view-command, edit-command, and compose-
- command, alike. In some unusual cases, this may not be
- desirable, but differentiation can be accomplished via
- separate mailcap entries, taking advantage of the fact that
- subsequent mailcap entries are searched if an earlier
- mailcap entry does not provide enough information:
-
- application/postscript; ps-to-terminal %s; \
- needsterminal
- application/postscript; ps-to-terminal %s; \
- compose=idraw %s
-
- In RFC 822 modified BNF, the following grammar describes a
- mailcap entry:
-
- Mailcap-Entry = typefield ; view-command
- [";" 1#field]
-
- typefield = propertype / implicit-wild
-
- propertype = type "/" wildsubtype
-
- implicitwild = type
-
- wildsubtype = subtype / "*"
-
- view-command = mtext
-
- mtext = *mchar
-
- mchar = schar / qchar
-
- schar = * <any CHAR except
- ";", "\", and CTLS>
-
- qchar = "\" CHAR ; may quote any char
-
- field = flag / namedfield
-
- namedfield = fieldname "=" mtext
-
- flag = "needsterminal" ; All these literals are to
-
-
-
-
- Borenstein [Page 5]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- / "copiousoutput" ; be interpreted as
- / x-token ; case-insensitive
-
- fieldname = / "compose" ;Also all of these
- / "composetyped" ;are case-insensitive.
- / "print"
- / "edit"
- / "test"
- / "x11-bitmap"
- / "description"
- / x-token
-
- Note that "type", "subtype", and "x-token" are defined in
- MIME. Note also that while the definition of "schar"
- includes the percent sign, "%", this character has a special
- meaning in at least the UNIX semantics, and will therefore
- need to be quoted as a qchar to be used literally.
-
- Appendix A: Implementation Details for UNIX
-
- Although this memo fully specifies a syntax for "mailcap"
- files, the semantics of the mailcap file are of necessity
- operating-system dependent in four respects. In order to
- clarify the intent, and to promote a standard usage, this
- appendix proposes a UNIX semantics for these four cases. If
- a mailcap mechanism is implemented on non-UNIX systems,
- similar semantic decisions should be made and published.
-
- Location of the Mailcap File(s)
-
- For UNIX, a path search of mailcap files is specified. The
- default path search is specified as including at least the
- following:
-
- $HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap
-
- However, this path may itself be overridden by a path
- specified by the MAILCAPS environment variable.
-
- Semantics of executable commands
-
- Several portions of a mailcap entry specify commands to be
- executed. In particular, the mandatory second field, the
- view-command, takes a command to be executed, as do the
- optional print, edit, test, and compose fields.
-
- On a UNIX system, such commands will each be a full shell
- command line, including the path name for a program and its
- arguments. (Because of differences in shells and the
- implementation and behavior of the same shell from one
- system to another, it is specified that the command line be
- intended as input to the Bourne shell, i.e. that it is
- implicitly preceded by "/bin/sh -c " on the command line.)
-
-
-
-
- Borenstein [Page 6]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- The two characters "%s", if used, will be replaced by the
- name of a file for the actual mail body data. In the case
- of the edit adn view-command, the body part will be passed
- to this command as standard input unless one or more
- instances of "%s" appear in the view-command, in which case
- %s will be replaced by the name of a file containing the
- body part, a file which may have to be created before the
- view-command program is executed. (Such files cannot be
- presumed to continue to exist after the view-command program
- exits. Thus a view-command that wishes to exit and continue
- processing in the background should take care to save the
- data first.) In the case of the compose and composetyped
- commands, %s should be replaced by the name of a file to
- which the composed data should be written by the programs
- named in the compose or composedtyped commands. Thus, the
- calling program will look in that file later in order to
- retrieve the composed data. If %s does not appear in the
- compose or composetyped commands, then the composed data
- will be assumed to be written by the composing programs to
- standard output.
-
- Furthermore, any occurrence of "%t" will be replaced by the
- content-type and subtype specification. (That is, if the
- content-type is "text/plain", then %t will be replaced by
- "text/plain".) A literal % character may be quoted as \%.
- Finally, named parameters from the Content-type field may be
- placed in the command execution line using "%{" followed by
- the parameter name and a closing "}" character. The entire
- parameter should appear as a single command line argument,
- regardless of embedded spaces. Thus, if the message has a
- Content-type line of:
-
- Content-type: multipart/mixed; boundary=42
-
- and the mailcap file has a line of:
-
- multipart/*; /usr/local/bin/showmulti \
- %t %{boundary}
-
- then the equivalent of the following command should be
- executed:
-
- /usr/local/bin/showmulti multipart/mixed 42
-
- Semantics of the "test" field
-
- The "test" field specifies a program to be used to test
- whether or not the current mailcap line applies. This can
- be used, for example, to have a mailcap line that only
- applies if the X window system is running, or if the user is
- running on a SPARCstation with a /dev/audio. The value of
- the "test" field is a program to run to test such a
- condition. The precise program to run and arguments to give
- it are determined as specified in the previous section. The
-
-
-
- Borenstein [Page 7]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- test program should return an exit code of zero if the
- condition is true, and a non-zero code otherwise.
-
- Semantics of the "compose" field
-
- On UNIX, the composing program is expected to produce a data
- stream for such a body part as its standard output. The
- program will be executed with the command line arguments
- determined as specified above. The data returned via its
- standard output will be given a Content-Type field that has
- no supplementary parameters. For example, the following
- mailcap entry:
-
- audio/basic; /usr/local/bin/showaudio %t
- compose = /usr/local/bin/recordaudio
-
- would result in tagging the data composed by the
- "recordaudio" program as:
-
- Content-Type: audio/basic
-
- If this is unacceptable -- for example, in the case of
- multipart mail a "boundary" parameter is required -- then
- the "compose" field cannot be used. Instead, the
- "composetyped" field should be used in the mailcap file.
-
- Semantics of the "composetyped" field
-
- The "composetyped" filed is much like the "compose" field,
- except that it names a composition program that produces,
- not raw data, but data that includes a MIME-conformant type
- specification. The program will be executed with the
- command line arguments determined as specified above. The
- data returned via its standard output must begin with a
- Content-Type header, followed optionally by other Content-*
- headers, and then by a blank line and the data. For
- example, the following mailcap entry:
-
- multipart/mixed; /usr/local/bin/showmulti %t \
- %{boundary}; \
- composetyped = /usr/local/bin/makemulti
-
- would result in executing the "makemulti" program, which
- would be expected to begin its output with a line of the
- form:
-
- Content-Type: multipart/mixed; boundary=foobar
-
- Note that a composition program need not encode binary data
- in base64 or quoted-printable. It remains the responsibility
- of the software calling the composition program to encode
- such data as necessary. However, if a composing program
- does encode data, which is not encouraged, it should
- announce that fact using a Content-Transfer-Encoding header
-
-
-
- Borenstein [Page 8]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- in the standard manner defined by MIME. Because such
- encodings must be announced by such a header, they are an
- option only for composetyped programs, not for compose
- programs.
-
- Appendix B: Sample Mailcap File
-
- The following is an example of a mailcap file for UNIX that
- demonstrates most of the syntax above. It contains
- explanatory comments where necessary.
-
- # Mailcap file for Bellcore lab 214.
- #
- # The next line sends "richtext" to the richtext
- program
- text/richtext; richtext %s; copiousoutput
- #
- # Next, basic u-law audio
- audio/*; showaudio; test=/usr/local/bin/hasaudio
- #
- # Next, use the xview program to handle several image
- formats
- image/*; xview %s; test=/usr/local/bin/RunningX
- #
- # The ATOMICMAIL interpreter uses curses, so needs a
- terminal
- application/atomicmail; /usr/local/bin/atomicmail %s; \
- needsterminal
- #
- # The next line handles Andrew format,
- # if ez and ezview are installed
- x-be2; /usr/andrew/bin/ezview %s; \
- print=/usr/andrew/bin/ezprint %s ; \
- compose=/usr/andrew/bin/ez -d %s \;
- edit=/usr/andrew/bin/ez -d %s; \;
- copiousoutput
- #
- # The next silly example demonstrates the use of
- quoting
- application/*; echo "This is \\"%t\\" but \
- is 50 \% Greek to me" \; cat %s; copiousoutput
-
-
- Appendix C: A Note on Format Translation
-
- It has been suggested that another function of a mailcap-
- like mechanism might be to specify the locally available
- tools for document format translation. For example, the
- file could designate a program for translating from format A
- to format B, another for translating from format B to format
- C, and finally a mechanism for displaying format C.
- Although this mechanism would be somewhat richer than the
- current mailcap file, and might conceivably also have
- utility at the message transport layer, it significantly
-
-
-
- Borenstein [Page 9]
-
-
-
-
- RFC 1343 Multimedia Mail Configuration June 1992
-
-
- complicates the processing effort necessary for a user agent
- that simply wants to display a message in format A. Using
- the current, simpler, mailcap scheme, a single line could
- tell such a user agent to display A-format mail using a
- pipeline of translators and the C-format viewer. This memo
- resists the temptation to complicate the necessary
- processing for a user agent to accomplish this task. Using
- the mailcap format defined here, it is only necessary to
- find the correct single line in a mailcap file, and to
- execute the command given in that line.
-
- References
-
- [RFC 822] Crocker, D., "Standard for the format of ARPA
- Internet text messages", RFC 822, UDEL, August, 1982.
-
- [RFC 1341] Borenstein, N., and N. Freed, "MIME
- (Multipurpose Internet Mail Extensions): Mechanisms for
- Specifying and Describing the Format of Internet Message
- Bodies", RFC 1341, Bellcore, June, 1992.
-
- Acknowledgements
-
- The author wishes to thank Malcolm Bjorn Gillies, Dan
- Heller, Olle Jaernefors, Keith Moore, Luc Rooijakkers, and
- the other members of the IETF task force on mail extensions
- for their comments on earlier versions of this draft. If
- other acknowledgements were neglected, please let me know,
- as it was surely accidental.
-
- Security Considerations
-
- Security issues are not discussed in this memo. However,
- the use of the mechanisms described in this memo can make
- it easier for implementations to slip into the kind of
- security problems discussed in the MIME document.
- Implementors and mailcap administrators should be aware of
- these security considerations, and in particular should
- exercise caution in the choice of programs to be listed in a
- mailcap file for automatic execution.
-
- Author's Address
-
- Nathaniel S. Borenstein
- MRE 2D-296, Bellcore
- 445 South St.
- Morristown, NJ 07962-1910
-
- Email: nsb@bellcore.com
- Phone: +1 201 829 4270
- Fax: +1 201 829 7019
-
-
-
-
-
-
- Borenstein [Page 10]
-
-
-